[JavaScript] 자바스크립트 동작원리 - 실행 컨텍스트

콜 스택에는 무엇이 쌓이는 걸까?

자바스크립트 엔진은 메모리 힙과 콜 스택으로 동작한다는 것을 우리는 알고있다. 콜 스택은 자바스크립트 엔진이 실행하고자 하는 함수가 담기지만, 그냥 코드가 담기는 것이 아니다. 함수가 실행되기 위해서는 지역변수, 전역변수와 같은 함수의 실행환경을 알아야 한다.

실행 컨텍스트는 이런 함수의 실행정보를 담는 단위이다. 운영체제에서 프로세스에 대한 정보가 PCB에 담겨 관리되는 것을 떠올려보면 유사하다.

실행 컨텍스트의 구성요소

실행 컨텍스트는 아래와 같은 정보들로 구성된다.

  1. 변수, 객체 프로퍼티
  2. 함수 선언
  3. 스코프
  4. this

그리고 이 정보들은 Variable Object, Scope Chain, thisValue 세 개의 객체에 담겨 관리된다.

변수 객체 (Variable Object)

변수 객체에는 변수와 함수선언에 대한 정보가 담긴다. 이때 전역 실행 컨텍스트의 경우와 함수 실행 컨텍스트의 경우에 따라 변수 객체가 가르키는 값이 조금 달라진다.

전역 실행 컨테스트의 경우에는 변수객체가 전역 객체를 가르키며 전역함수의 객체와 전역 변수의 값을 가진다.

함수 실행 컨텍스트의 경우에는 함수의 인자들이 담긴 배열형태의 객체와 내부 함수의 함수 객체, 지역 변수의 값을 가진다.

스코프 체인 (Scope Chain)


Written by@전여훈 (Click Me!)
고민이 담긴 코드를 만들자, 고민하기 위해 공부하자.